package com.ndbg.demo.exception;

import java.util.Optional;

public interface FailureCause {
    /**
     * 所属模块
     * @return 模块信息
     */
    default String getModule(){
        return "default";
    }

    /**
     * 异常编码
     * @return 异常错误码
     */
    Integer getCode();

    /**
     * 异常原因
     * @return 异常错误信息
     */
    String getMessage();

    /**
     * 根据编码获取错误信息
     * @param code 错误码
     * @param <T> 错误类别
     * @return 错误编码对应的枚举
     */
    default <T extends Enum<T> & FailureCause> Optional<T> codeOf(Integer code) {
        return Optional.empty();
    }
}
